## pval_cutoff: 0.05
## lfc_cutoff: 0.58
## low_counts_cutoff: 10

General statistics

# Number of samples
length(counts_data)
## [1] 6
# Number of genes
nrow(counts_data)
## [1] 43432
# Total counts
colSums(counts_data)
## SRR13535276 SRR13535278 SRR13535280 SRR13535288 SRR13535290 SRR13535292 
##     7431251     7870063     9246891    15630374    14343946     7279161

Create DDS objects

# Create DESeqDataSet object
dds <- get_DESeqDataSet_obj(counts_data, ~ experimental_class_type)
## [1] TRUE
## [1] TRUE
## [1] "DESeqDataSet object of length 43432 with 0 metadata columns"
## [1] "DESeqDataSet object of length 14329 with 0 metadata columns"
colData(dds)
## DataFrame with 6 rows and 3 columns
##             experimental_class_type                   regime         treatment
##                            <factor>                 <factor>       <character>
## SRR13535276                       A in space without gravity without nanoceria
## SRR13535278                       A in space without gravity without nanoceria
## SRR13535280                       A in space without gravity without nanoceria
## SRR13535288                       C    in space with gravity without nanoceria
## SRR13535290                       C    in space with gravity without nanoceria
## SRR13535292                       C    in space with gravity without nanoceria

Sample-to-sample comparisons

# Transform data (blinded rlog)
rld <- get_transformed_data(dds)

PCA plot

pca <- rld$pca
pca_df <- cbind(as.data.frame(colData(dds)) %>% rownames_to_column(var = 'name'), pca$x)
summary(pca)
## Importance of components:
##                            PC1     PC2     PC3     PC4     PC5       PC6
## Standard deviation     30.2090 29.5846 25.9794 23.5550 20.9828 8.217e-14
## Proportion of Variance  0.2639  0.2531  0.1952  0.1605  0.1273 0.000e+00
## Cumulative Proportion   0.2639  0.5170  0.7122  0.8727  1.0000 1.000e+00
ggplot(pca_df, aes(x = PC1, y = PC2, color = regime)) +
  geom_point() +
  geom_text(aes(label = name), position = position_nudge(y = -2), show.legend = F, size = 3) +
  scale_color_manual(values = colors_default) +
  scale_x_continuous(expand = c(0.2, 0))

Correlation heatmap

pheatmap(
  cor(rld$matrix),
  annotation_col = as.data.frame(colData(dds)) %>% select(regime),
  color = brewer.pal(8, 'YlOrRd')
)

Wald test results

# DE analysis using Wald test
dds_full <- DESeq(dds)
colData(dds_full)
## DataFrame with 6 rows and 4 columns
##             experimental_class_type                   regime         treatment        sizeFactor
##                            <factor>                 <factor>       <character>         <numeric>
## SRR13535276                       A in space without gravity without nanoceria 0.655124462757715
## SRR13535278                       A in space without gravity without nanoceria 0.947372071793416
## SRR13535280                       A in space without gravity without nanoceria 0.758311747504551
## SRR13535288                       C    in space with gravity without nanoceria  1.97083546265766
## SRR13535290                       C    in space with gravity without nanoceria   1.3551892091251
## SRR13535292                       C    in space with gravity without nanoceria 0.816510667410872
# Wald test results
res <- results(
  dds_full,
  contrast = c('experimental_class_type', condition, control),
  alpha = pval_cutoff
)
res
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 14329 rows and 6 columns
##                            baseMean     log2FoldChange             lfcSE               stat             pvalue              padj
##                           <numeric>          <numeric>         <numeric>          <numeric>          <numeric>         <numeric>
## ENSMUSG00000098104 5.24444581030292   1.17310310044489  0.99161120801225   1.18302727012984  0.236798339919473                NA
## ENSMUSG00000103922 2.61017447712805 -0.262965829778693  1.94930511845915 -0.134902344065334  0.892689086198627                NA
## ENSMUSG00000033845 204.963079810103 -0.425955616317278 0.540700687642199 -0.787784491591305   0.43082277388837 0.888928485711851
## ENSMUSG00000102275 2.43630286136714  0.448020511939775  1.37647578124654  0.325483759353939  0.744814972221045                NA
## ENSMUSG00000025903  181.46057519749 -0.122731099975621  0.30394086592478 -0.403799270631791  0.686360332881593 0.950153954273961
## ...                             ...                ...               ...                ...                ...               ...
## ENSMUSG00000095562 36.9783905023854 -0.883957358210941 0.772000682401585  -1.14502147259906  0.252200262623108 0.812807927072618
## ENSMUSG00000051412 1676.56103290161  -1.36926742493018 0.628477989779351  -2.17870386425292 0.0293536745152883 0.464579200800198
## ENSMUSG00000061654 108.533107600463  -5.77440159164299  3.75625768684938  -1.53727514804406                 NA                NA
## ENSMUSG00000079834 72.0047621900369 -0.178751211659013 0.513245105648271 -0.348276505108091  0.727632536848299 0.955392432750922
## ENSMUSG00000096768  502.25469835147 -0.493170094984267 0.603046221474518 -0.817798167739796  0.413472444474608 0.884870660079974
mcols(res)
## DataFrame with 6 rows and 2 columns
##                        type                                            description
##                 <character>                                            <character>
## baseMean       intermediate              mean of normalized counts for all samples
## log2FoldChange      results log2 fold change (MLE): experimental_class_type A vs C
## lfcSE               results         standard error: experimental class type A vs C
## stat                results         Wald statistic: experimental class type A vs C
## pvalue              results      Wald test p-value: experimental class type A vs C
## padj                results                                   BH adjusted p-values
summary(res)
## 
## out of 14329 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 10, 0.07%
## LFC < 0 (down)     : 66, 0.46%
## outliers [1]       : 177, 1.2%
## low counts [2]     : 3046, 21%
## (mean count < 8)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results

Summary details

# Upregulated genes (LFC > 0)
res_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res[which(is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 177 rows and 6 columns
##                            baseMean    log2FoldChange            lfcSE              stat    pvalue      padj
##                           <numeric>         <numeric>        <numeric>         <numeric> <numeric> <numeric>
## ENSMUSG00000103509 10.8320099261287  -4.6106683978262 2.49239405132351 -1.84989544304916        NA        NA
## ENSMUSG00000041809 11.1968752418153 -2.92678950979931  1.7841525533593 -1.64043680249684        NA        NA
## ENSMUSG00000079554 43.7763761754213 -6.10966440463779 1.90349482789854 -3.20970896011462        NA        NA
## ENSMUSG00000026196 34.2031624970745 -1.53543416576899 1.20266284455742 -1.27669543689448        NA        NA
## ENSMUSG00000104396 8.97783614623181  -6.2475045913834 3.34098463499474 -1.86995909108491        NA        NA
## ...                             ...               ...              ...               ...       ...       ...
## ENSMUSG00000073177 40.9145855445003 -3.88072837034042 1.43752644482295 -2.69958746450636        NA        NA
## ENSMUSG00000035395 35.9461613384229 -5.03785580430202  1.7606172573245 -2.86141453137733        NA        NA
## ENSMUSG00000079481 19.5767200709396 -6.39760640536655 2.32018359903316 -2.75737075636277        NA        NA
## ENSMUSG00000046873 260.500379322282 -2.14693079392589 1.07524812036326 -1.99668407065019        NA        NA
## ENSMUSG00000061654 108.533107600463 -5.77440159164299 3.75625768684938 -1.53727514804406        NA        NA
# Low counts (only padj is NA)
res[which(is.na(res$padj) & !is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 3046 rows and 6 columns
##                            baseMean     log2FoldChange            lfcSE               stat             pvalue      padj
##                           <numeric>          <numeric>        <numeric>          <numeric>          <numeric> <numeric>
## ENSMUSG00000098104 5.24444581030292   1.17310310044489 0.99161120801225   1.18302727012984  0.236798339919473        NA
## ENSMUSG00000103922 2.61017447712805 -0.262965829778693 1.94930511845915 -0.134902344065334  0.892689086198627        NA
## ENSMUSG00000102275 2.43630286136714  0.448020511939775 1.37647578124654  0.325483759353939  0.744814972221045        NA
## ENSMUSG00000103280 3.46040355525309 -0.850530187587735 1.16229241419043 -0.731769541987549  0.464309242409218        NA
## ENSMUSG00000033740 3.03360583277327  -2.19014969005346  2.4850286394917 -0.881337806433266  0.378135009073659        NA
## ...                             ...                ...              ...                ...                ...       ...
## ENSMUSG00000040621 6.28953907543633 0.0633648090125568  1.3240105506182 0.0478582357089004  0.961829224302176        NA
## ENSMUSG00000084806 7.30961844503024   3.79189624215575 2.11843093652276   1.78995509213052 0.0734611310865159        NA
## ENSMUSG00000087340  4.3175028293349  0.551668298972368 1.09951114421165  0.501739615716141  0.615850693884982        NA
## ENSMUSG00000087201 1.56303777668801  -1.69962503408446  2.1091434019372 -0.805836640848313  0.420337047918611        NA
## ENSMUSG00000081137 4.37426703475702   1.86267604059602 1.29653834674807   1.43665325847702  0.150816542447861        NA

Shrunken LFC results

plotMA(res)

# Shrunken LFC results
res_shrunken <- lfcShrink(
  dds_full,
  coef = str_c('experimental_class_type_', condition, '_vs_', control),
  type = 'apeglm'
)
res_shrunken
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 14329 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE             pvalue              padj
##                           <numeric>            <numeric>         <numeric>          <numeric>         <numeric>
## ENSMUSG00000098104 5.24444581030292   0.0448141693689787 0.200299850095257  0.236798339919473 0.805027902477568
## ENSMUSG00000103922 2.61017447712805 -0.00262460452712968  0.19554373304714  0.892689086198627                NA
## ENSMUSG00000033845 204.963079810103  -0.0506730884828057 0.193102615216373   0.43082277388837 0.887378739739492
## ENSMUSG00000102275 2.43630286136714  0.00905612587050704 0.194852715878374  0.744814972221045                NA
## ENSMUSG00000025903  181.46057519749  -0.0364684831993053 0.168037946148257  0.686360332881593 0.950764857045811
## ...                             ...                  ...               ...                ...               ...
## ENSMUSG00000095562 36.9783905023854  -0.0542471544327936   0.2012798327596  0.252200262623108 0.810642401791627
## ENSMUSG00000051412 1676.56103290161   -0.142444016116182 0.266264884008146 0.0293536745152883 0.477828866641049
## ENSMUSG00000061654 108.533107600463 -0.00772222427744714 0.196727218109609                 NA                NA
## ENSMUSG00000079834 72.0047621900369  -0.0226788682876471 0.185198195188605  0.727632536848299 0.955648026932455
## ENSMUSG00000096768  502.25469835147  -0.0479803435282482 0.194708125556535  0.413472444474608 0.881888024109551
plotMA(res_shrunken)

mcols(res_shrunken)
## DataFrame with 5 rows and 2 columns
##                        type                                            description
##                 <character>                                            <character>
## baseMean       intermediate              mean of normalized counts for all samples
## log2FoldChange      results log2 fold change (MAP): experimental class type A vs C
## lfcSE               results           posterior SD: experimental class type A vs C
## pvalue              results      Wald test p-value: experimental class type A vs C
## padj                results                                   BH adjusted p-values
summary(res_shrunken, alpha = pval_cutoff)
## 
## out of 14329 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up)       : 10, 0.07%
## LFC < 0 (down)     : 64, 0.45%
## outliers [1]       : 177, 1.2%
## low counts [2]     : 2223, 16%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results

Summary details

# Upregulated genes (LFC > 0)
res_shrunken_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_shrunken_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res_shrunken[which(is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 177 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE    pvalue      padj
##                           <numeric>            <numeric>         <numeric> <numeric> <numeric>
## ENSMUSG00000103509 10.8320099261287  -0.0194228874265493 0.197813240254669        NA        NA
## ENSMUSG00000041809 11.1968752418153  -0.0291618533199038 0.199152920134047        NA        NA
## ENSMUSG00000079554 43.7763761754213  -0.0374488025156393 0.201811531009124        NA        NA
## ENSMUSG00000026196 34.2031624970745  -0.0377389335060725 0.199777991831777        NA        NA
## ENSMUSG00000104396 8.97783614623181  -0.0112216377679827 0.196985595715653        NA        NA
## ...                             ...                  ...               ...       ...       ...
## ENSMUSG00000073177 40.9145855445003    -0.05177539336895 0.206318527052347        NA        NA
## ENSMUSG00000035395 35.9461613384229  -0.0392465304365335 0.202237525894585        NA        NA
## ENSMUSG00000079481 19.5767200709396  -0.0270943641052452 0.199259134010975        NA        NA
## ENSMUSG00000046873 260.500379322282  -0.0627339496035779 0.209468921385207        NA        NA
## ENSMUSG00000061654 108.533107600463 -0.00772222427744714 0.196727218109609        NA        NA
# Low counts (only padj is NA)
res_shrunken[which(is.na(res_shrunken$padj) & !is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C 
## Wald test p-value: experimental class type A vs C 
## DataFrame with 2223 rows and 5 columns
##                            baseMean       log2FoldChange             lfcSE            pvalue      padj
##                           <numeric>            <numeric>         <numeric>         <numeric> <numeric>
## ENSMUSG00000103922 2.61017447712805 -0.00262460452712968  0.19554373304714 0.892689086198627        NA
## ENSMUSG00000102275 2.43630286136714  0.00905612587050704 0.194852715878374 0.744814972221045        NA
## ENSMUSG00000103280 3.46040355525309  -0.0240957614339984 0.195864224906374 0.464309242409218        NA
## ENSMUSG00000033740 3.03360583277327  -0.0124259725941821 0.196669746909643 0.378135009073659        NA
## ENSMUSG00000103629 4.18123106585651  -0.0183069954616375 0.197179218379926 0.266961831496182        NA
## ...                             ...                  ...               ...               ...       ...
## ENSMUSG00000015405 1.78268883970631 -0.00802874443841595  0.19660563158546  0.40979353300801        NA
## ENSMUSG00000047757 2.27039344041303   0.0051114625538439 0.195237585516331 0.827972976924454        NA
## ENSMUSG00000087340  4.3175028293349   0.0171580093375075 0.194569701047645 0.615850693884982        NA
## ENSMUSG00000087201 1.56303777668801  -0.0149244619167915 0.196555580635831 0.420337047918611        NA
## ENSMUSG00000081137 4.37426703475702   0.0416171003235631 0.201108854469204 0.150816542447861        NA

Visualizing results

Heatmaps

# Plot normalized counts (z-scores)
pheatmap(counts_sig_norm[2:7], 
         color = brewer.pal(8, 'YlOrRd'), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime),
         border_color = NA,
         fontsize = 10,
         scale = 'row',
         fontsize_row = 10, 
         height = 20)

# Plot log-transformed counts
pheatmap(counts_sig_log[2:7], 
         color = rev(brewer.pal(8, 'RdYlBu')), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime),
         border_color = NA,
         fontsize = 10,
         fontsize_row = 10, 
         height = 20)

# Plot log-transformed counts (top 24 DE genes)
pheatmap((counts_sig_log %>% filter(ensembl_gene_id %in% res_sig_df$ensembl_gene_id[1:24]))[2:7],
         color = rev(brewer.pal(8, 'RdYlBu')), 
         cluster_rows = T, 
         show_rownames = F,
         annotation_col = as.data.frame(colData(dds)) %>% select(regime), 
         fontsize = 10,
         fontsize_row = 10, 
         height = 20)

Volcano plots

# Unshrunken LFC
res_df %>% 
  mutate(
    sig_threshold = if_else(
      padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
      if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
      'non-DE'
    )
  ) %>% 
  filter(!is.na(sig_threshold)) %>% 
  ggplot() +
  geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
  scale_color_manual(values = c('blue', 'red', 'gray')) +
  xlab('log2 fold change') + 
  ylab('-log10 adjusted p-value')

# Shrunken LFC
res_shrunken_df %>% 
  mutate(
    sig_threshold = if_else(
      padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
      if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
      'non-DE'
    )
  ) %>% 
  filter(!is.na(sig_threshold)) %>% 
  ggplot() +
  geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
  scale_color_manual(values = c('blue', 'red', 'gray')) +
  xlab('log2 fold change') + 
  ylab('-log10 adjusted p-value')

GSEA (all)

Hallmark genesets

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

GSEA (DE)

Hallmark genesets

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function

# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

System Info

sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
##  [1] grid      parallel  stats4    stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] VennDiagram_1.6.20          futile.logger_1.4.3         fgsea_1.12.0                Rcpp_1.0.3                  RColorBrewer_1.1-2          pheatmap_1.0.12             DESeq2_1.26.0               SummarizedExperiment_1.16.1 DelayedArray_0.12.3         BiocParallel_1.20.1         matrixStats_0.57.0          Biobase_2.46.0              GenomicRanges_1.38.0        GenomeInfoDb_1.22.1         IRanges_2.20.2              S4Vectors_0.24.4            BiocGenerics_0.32.0         scales_1.1.1                forcats_0.4.0               stringr_1.4.0               dplyr_1.0.2                 purrr_0.3.3                 readr_1.3.1                 tidyr_1.0.0                 tibble_3.1.0                ggplot2_3.3.3               tidyverse_1.2.1            
## 
## loaded via a namespace (and not attached):
##  [1] colorspace_1.4-1       ellipsis_0.3.0         htmlTable_1.13.3       XVector_0.26.0         base64enc_0.1-3        rstudioapi_0.10        farver_2.1.0           bit64_0.9-7            mvtnorm_1.1-1          apeglm_1.8.0           AnnotationDbi_1.48.0   fansi_0.4.0            lubridate_1.7.4        xml2_1.2.2             splines_3.6.3          geneplotter_1.64.0     knitr_1.25             Formula_1.2-3          jsonlite_1.6           broom_0.7.5            annotate_1.64.0        cluster_2.1.0          png_0.1-7              compiler_3.6.3         httr_1.4.1             backports_1.1.5        assertthat_0.2.1       Matrix_1.2-18          cli_1.1.0              formatR_1.7            acepack_1.4.1          htmltools_0.5.1.1      tools_3.6.3            coda_0.19-3            gtable_0.3.0           glue_1.4.2             GenomeInfoDbData_1.2.2 fastmatch_1.1-0        bbmle_1.0.23.1         cellranger_1.1.0       jquerylib_0.1.3        vctrs_0.3.4            xfun_0.22              rvest_0.3.5            lifecycle_0.2.0        XML_3.99-0.3           MASS_7.3-51.5          zlibbioc_1.32.0        hms_0.5.2              lambda.r_1.2.4         yaml_2.2.0             memoise_1.1.0          gridExtra_2.3          emdbook_1.3.12         sass_0.3.1             bdsmatrix_1.3-4        rpart_4.1-15           latticeExtra_0.6-29    stringi_1.4.3          RSQLite_2.2.1          genefilter_1.68.0      checkmate_1.9.4        rlang_0.4.8            pkgconfig_2.0.3        bitops_1.0-6           evaluate_0.14          lattice_0.20-38        labeling_0.3           htmlwidgets_1.5.1      bit_1.1-15.1           tidyselect_1.1.0       plyr_1.8.4             magrittr_1.5           R6_2.4.0               generics_0.0.2         Hmisc_4.3-0            DBI_1.1.0              pillar_1.5.1           haven_2.2.0            foreign_0.8-75         withr_2.1.2            survival_3.1-8         RCurl_1.95-4.12        nnet_7.3-12            modelr_0.1.5           crayon_1.3.4           futile.options_1.0.1   utf8_1.1.4             rmarkdown_2.7          jpeg_0.1-8.1           locfit_1.5-9.4         readxl_1.3.1           data.table_1.13.6      blob_1.2.1             digest_0.6.27          xtable_1.8-4           numDeriv_2016.8-1.1    munsell_0.5.0          bslib_0.2.4